Weapon lock control system

ABSTRACT

An apparatus for controlling a trigger mechanism of a weapon includes a locking device configured to disable the trigger mechanism in an engaged state and a lock controller. The lock controller includes a location sensor, a processing device, and a memory device. The memory device stores one or more fire control rules and instructions executable by the processing device to determine whether to disengage the locking device to enable the trigger mechanism based on the one or more fire control rules, data from the location sensor, and a type of the weapon.

PRIORITY CLAIM

This application claims the benefit of U.S. Provisional Patent Application No. 62/652,328, filed on Apr. 4, 2018 and entitled “Geo-localizable firearms system and method that triggers bullet firing only within a set of specific authorized areas,” the content of which is incorporated in its entirety.

FIELD

The application relates to weapon lock control systems.

BACKGROUND

Weapons, such as and including firearms, can be used for a variety of purposes, some of which are legal and beneficial, and some of which are illegal and harmful. For example, weapons are sometimes used to commit crimes, such as in the commission of robberies, murders, kidnappings, etc. However, firearms have many legal uses as well, such as for example, hunting, self-defense, and sport. As another example, law enforcement officers use firearms in the course of their duties to protect the public. But those weapons are not able to discriminate between legal and illegal uses.

SUMMARY

Systems and methods for selectively unlocking a weapon (generally referred to herein as a “firearm”) are disclosed. In particular, a firearm includes a processing device and a memory storing instructions executable by the processing device to control a locking device, such as an electromagnetic lock or a shutter, based on one or more firearm control rules. A particular fire control rule may be based on distance to a location, type of firearm, user identifier, an authorized time period, a severity level associated with the location, a time associated with the fire control rule, a date associated with the fire control rule, or a combination thereof. While engaged, the locking device prevents actuation of a trigger of the firearm, and in particular examples, the locking device is engaged by default. Accordingly, the described systems and methods may reduce misuse of firearms by selectively enabling firearms in contexts that are not disallowed. By incorporating the disclosed system into newly manufactured firearms, lethal crimes may be reduced. Accordingly, weapons manufacturers may reduce lethal crimes without reducing manufacturing output.

An apparatus for controlling a trigger mechanism of a weapon includes a locking device configured to disable the trigger in an engaged state and a lock controller. The lock controller includes a location sensor, a processing device, and a memory device. The memory device stores one or more fire control rules and instructions executable by the processing device to determine whether to disengage the locking device to enable the trigger mechanism based on the one or more fire control rules, data from the location sensor, and a type of the weapon.

A computer readable storage device stores instructions executable by one or more processing devices to receive location data from a location sensor of a firearm. The instructions are further executable by the one or more processors to disengage a locking device to enable a trigger of the firearm based on one or more fire control rules, data from the location sensor, and a type of the firearm.

A method includes receiving location data from a location sensor of a firearm. The method further includes determining whether to disengage a locking device to enable a trigger of the firearm based on one or more fire control rules, data from the location sensor, and a type of the firearm.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a firearm locking and unlocking system;

FIG. 2A is a diagram of the firearm locking and unlocking system embedded in a handgun;

FIG. 2B is a diagram of the firearm locking and unlocking system embedded in an assault rifle;

FIG. 3A is a diagram of a motorized version of a locking device of the firearm locking and unlocking system in a locked position;

FIG. 3B is a diagram of the motorized version of the locking device of the firearm locking and unlocking system in an unlocked position;

FIG. 4A is a diagram of a magnetic version of the locking device of the firearm locking and unlocking system in a locked position;

FIG. 4B is a diagram of the magnetic version of the locking device of the firearm locking and unlocking system in an unlocked position;

FIG. 5A is a flowchart illustrating a first portion of a method of determining whether to unlock a firearm; and

FIG. 5B is a flowchart illustrating a second portion of the method of determining whether to unlock the firearm.

DETAILED DESCRIPTION

Referring to FIG. 1, a block diagram illustrating a system 100 for locking and unlocking a firearm is shown. The system 100 is integrated into the firearm. Integration of the system 100 with various firearms is illustrated by FIGS. 2A-2B. While described and illustrated as integrated in various firearms, the system 100 may be integrated in other types of weapons in other implementations. The system 100 includes a lock controller 102, a locking device 104, and a trigger 106 of the firearm. While described as a trigger, it should be noted that in other implementations, the trigger 106 corresponds to a different type of trigger mechanism (e.g., a button, a switch, etc.) for initiating discharge of a weapon. The lock controller 102 includes a memory 120, a processing device 122, a time sensor 124, a location sensor 126, and a user interface 130. The memory 120 includes one or more computer readable storage devices. The one or more computer readable storage devices may include one or more read only memory (ROM) devices, one or more random access memory (RAM) device, one or more solid state drive (SSD) devices, one or more hard disc drive (HDD) devices, one or more other memory devices of other types, or a combination thereof. A computer readable storage device is an article of manufacture and is not a signal. The processing device 122 may correspond to a central processor unit, an application specific integrated circuit, a field programmable gate array, another type of processing device, or a combination thereof. The time sensor 124 may include a digital clock or other type of time sensor. The location sensor 126 may include a global positioning system (GPS) device, an inertial measurement unit (IMU), another type of location sensor, or a combination thereof. The user interface 130 may include one or more input elements, one or more output elements, or a combination thereof. Examples of input devices include touch screen displays, buttons, switches, microphones, etc. Examples of output elements include display devices (e.g., a light emitting diode screen, a liquid crystal display screen, a light emitting diode indicator, etc.), speakers, etc.

Some implementations of the lock controller 102 may include more or fewer elements than shown. For example, the lock controller 102 may not include the time sensor 124 in some examples. Further, some implementations include one or more wired and/or wireless communications interfaces. For example, the lock controller 102 may include a WiFi® interface, a Bluetooth® interface, a universal serial bus (USB) interface, one or more other communication interfaces, or a combination thereof (Wi-Fi is a registered trademark of Wi-Fi Alliance Corporation California of Austin, Tex., and Bluetooth is a registered trademark of Bluetooth SIG, Inc. of Kirkland, Wash.).

Referring back to the memory 120, the memory 120 stores a user identifier 131, a firearm type 132, one or more fire control rules 134, and instructions 136. The user identifier 131 identifies a user (e.g., an owner) of the firearm into which the system 100 is integrated. In some implementations, the user identifier 131 is stored in the memory 120 upon sale of the firearm. For example, a point of sale computer system (or other computer device) at a gun store may connect to the lock controller 102 and store the user identifier 131 in the memory 120. In some implementations, the user identifier 131 is communicated to the lock controller 102 in an encrypted form. For example, the point of sale computer system (or other computer device) may encrypt the user identifier 131 using triple DES or another encryption algorithm prior to transmitting the user identifier 131 to the lock controller 102. The lock controller 102 may store the user identifier 131 in the memory 120 in an encrypted format. The user identifier 131 may correspond to a unique identifier, such as a telephone number, a gun registration number, or any other type of identifier. In other implementations, the user identifier 131 is transferred to the memory 120 from another memory device of an individual who wishes to use the firearm. For example, a user may plug a memory stick including the user identifier 131 into the lock controller 102 and the lock controller 102 may copy the user identifier 131 into the memory 120. In some implementations, the lock controller 102 may delete the user identifier 131 from the memory 120 upon detecting removal of the memory stick or upon expiration of a time to live associated with the user identifier 131.

The firearm type 132 identifies a type of the firearm into which the system 100 is integrated. The type of the firearm may correspond to a category of the firearm, an ammunition used by the firearm, an effective range of the firearm, or a combination thereof. Examples of categories include assault weapon, handgun, shotgun, hunting rifle, etc. In some implementations, the firearm type 132 is stored in the memory 120 upon manufacture of the firearm. For example, the firearm type 132 may be stored in a read only portion of the memory 120 by the manufacturer of the firearm. As explained above, the firearm type 132 may be stored in the memory 120 in an encrypted format. The read only portion of memory 120 may correspond to a read only memory device, to a hardwired memory device storing the firearm type 132, or to another type of read-only memory.

The one or more fire control rules 134 indicate conditions under which the firearm should or should not be unlocked. For example, the one or more fire control rules 134 may indicate that a particular firearm type is not to be unlocked within a particular radius of a location. In some implementations, each rule of the one or fire control rules 134 includes one or more of the following fields or attributes: <location name>; <latitude>; <longitude>; <radius>; <authorized period>; <severity>; <arm type>; <user ID>; <date of entry>; and <time of entry>. Other implementations may include fewer/more or different attributes. Further, in some implementations, attributes corresponding to the attributes identified above may have different names.

The attribute <location name> indicates a label of a location. For example, the attribute <location name> may have a value of “the Alamo.” The attributes <latitude> and <longitude> indicate coordinates identifying a position of the location on the Earth. For example, <latitude> may have a value of “29°25′33″N” and <longitude> may have a value of “98°29′10″W.” While examples of latitude and longitude are provided herein expressed as degrees, minutes, and seconds, the system 100 may operate on expressions of latitude and longitude in decimal degrees in some implementations. The attribute <radius> indicates a radius around the location that the rule applies to. For example, <radius> may have a value of “200 feet.” The attribute <authorized period> indicates a period of time during which hunting arms may be used within the radius. Thus, the <latitude>, <longitude>, and <radius> attributes define an area of the Earth to which a rule applies and the <location name> attribute assigns a name to the area.

The <arm type> attribute indicates an arm type for which the rule applies. As described above, a type may correspond to a category of the firearm, an ammunition used by the firearm, an effective range of the firearm, or a combination thereof.

The <authorized period> attribute corresponds to a period of time during which use of the arm type is authorized for the location. For example, the period of time may correspond to a hunting season. To illustrate, <authorized period> may have a value of “Oct. 27, 2018-Feb. 10, 2019.”

The <severity> attribute indicates restrictions based on a level of public concern with protecting one or more locations. The memory 120 may further store a severity database mapping areas to severity levels. For example, several areas (e.g., location and radius combinations) corresponding to hospitals and schools may be mapped to a severity value of “0” in the severity database while an area associated with the White House has a severity level of “1”. 0 may indicate a highest level of public concern. The <severity> attribute in the one or more fire control rules 134 defines a restriction for one or more weapon types and/or one or more users. For example, the fire control rule <weapon type=“x”>; <severity=“0”> may indicate that weapons of any type may not be used areas that have a severity level of 0. In some implementations, a fire control rule for a particular severity level applies to areas of greater concern as well (e.g., areas associated with lower severity levels). For example, <weapon type=“hand gun”; <severity=“1”> may restrict hand guns in both areas associated with severity level 1 and areas associated with severity level 0. In other examples, higher values may indicate greater levels of public concern. In such other examples, <weapon type=“hand gun”; <severity=“1”> may restrict hand guns in areas associated with severity level 1 and areas associated with severity level 2. While severity levels are described herein, it should be noted that the one or more fire control rules 134 may include restrictions based on other categorizations of areas. In such implementations, the memory 120 may store a database mapping areas to categorizations.

The <user ID> attribute indicates a user identifier (ID) corresponding to a user (e.g., gun owner or other user) to which the rule applies. As explained above, the user ID may include or correspond to a telephone number, a gun registry number, or some other identifier.

The <date of entry> attribute indicates a date on which the rule was added to the one or more fire control rules 134. Similarly, the <time of entry> attribute indicates a time at which the rule was added to the one or more fire control rules 134. The <date of entry> and <time of entry> attributes indicate a time of update of the one or more fire control rules 134.

It should be noted that individual rules may not include each attribute supported by the system. For example, some entries may not include the <authorized period> attribute. Further, attributes may be assigned wild cards as a value. For example, <user ID=“*”> may indicate that a particular rule applies to all users. As described herein, the one or more fire control rules 134 identify circumstances under which discharge of a firearm should not be allowed while the <authorized period> attribute identifies an exception to a restriction. Because the one or more fire control rules 134 identify circumstances under which firearms may not be discharged, the one or more fire control rules 134 may be considered a blacklist database. The disclosed attributes of the one or more fire control rules 134 are provided for purposes of illustration. Different rules may be implemented to achieve the functionality described herein.

In some implementations, the one or more fire control rules 134 further includes an entry indicating a date and time of a last update to the fire control rule(s) 134. For example, the lock controller 102 may connect to a remote rules database device (e.g., via a wired or wireless connection) and may download updated fire control rules. The remote rules database device may be a device associated with a gun manufacturer. For example, the one or more fire control rules 134 may be downloaded to the memory 120 at time of manufacture. The remote rules database device may be associated with an arm seller. For example, the fire control rules 134 (or updates) may be downloaded to the memory 120 at time of sale. In other examples, the remote rules database device may be associated with a government agency. The lock controller 102 may access different remote rules database devices overtime. Each time the one or more fire control rules 134 are updated, the lock controller 102 may create an entry indicating a date and time of the update. The one or more fire control rules 134 may be encrypted so that a user of the firearm into which the lock controller 102 is integrated may be unable to edit the one or more fire control rules 134 generally and the entry indicating the date and time of the last update in particular. In some implementations, a portion of the one or more fire control rules 134 is hardcoded. For example, a portion of the one or more fire control rules 134 may be stored in a read only memory or other fixed memory device.

A first example of a rule that may be included in the one or more fire control rules 134 is <location name=“the White House”>; <latitude=“38°53″52″N”>; <longitude=“77°02′11″W”>; <radius=“300 feet”>; <arm type=“assault rifle”>; <user ID=“*”>; <date of entry=“8/7/2018”>; <time of entry=“11:37:00CT”>. The first example rule indicates that assault rifle type weapons may not be fired by anyone within 300 feet of 38°53′52″N, 77°02′11″W, which is the location of the White House. The first example rule indicates that the first example rule was updated/saved on Aug. 7, 2018 at 11:37:00 CT.

A second example of a rule is <location name=“the White House”>; <latitude=“38°53′52″N”>; <longitude=“77°02′11″W”>; <radius=“300 feet”>; <arm type=“assault rifle”>; <user ID=“1234”>; <date of entry=“8/7/2018”>; <time of entry=“11:37:00CT”>. The second example rule is the same as the first example rule except the second example rule applies to a specific user whose ID is “1234.”

A rule may have more than one value for one or more attributes. To illustrate, a third example of a rule is <location name=“the White House”>; <latitude=“38°53′52″N”>; <longitude=“77°02′11″W”>; <radius=“300 feet”>; <arm type=“assault rifle”>; <user ID=“1234”>; <user ID=“5678”>; <date of entry=“8/7/2018”>; <time of entry=“11:37:00CT”>. The third example rule is the same as the second example rule except the third example rule applies to both the specific user whose ID is “1234” and to a specific user whose ID is “5678.”

A fourth example of a rule is <location name=“Sabine National Forest”>; <latitude=“31°20′27″N”>; <longitude=“93°50′32″W”>; <radius=“1000 feet”>; <arm type=“hunting rifle”>; <user ID=“*”>; <authorized period=“10/01/2018-11/01/2018”>; <date of entry=“8/7/2018”>; <time of entry=“11:37:00CT”>. The fourth example rule indicates that hunting rifle type weapons may not be fired by anyone within 1000 feet of 31°20′27″N″, 93°50′32″W, which is the location of Sabine National Forest, except between Oct. 1, 2018 and Nov. 1, 2018. In some implementations, the <authorized period> attribute may only be used to create exceptions for hunting weapons.

The one or more fire control rules 134 may include multiple different rules for the same location. Accordingly, different types of firearms or different users may be subject to different restrictions. For example, the one or more fire control rules 134 may include a fourth example rule and a fifth example rule <location name=“Sabine National Forest”>; <latitude=“31°20′27″N”>; <longitude=“93°50′32″W”>; <radius=“2000 feet”>; <arm type=“assault rifle”>; <user ID=“*”>; <date of entry=“8/7/2018”>; <time of entry=“11:37:00CT”>. Together, the fourth and fifth example rules indicate that hunting rifle type weapons may not be fired by anyone within 1000 feet of 31°20′27″N″, 93°50′32″W, except between Oct. 1, 2018 and Nov. 1, 2018, and assault rifles may never be fired by anyone within 2000 feet of 31°20′27″N″, 93°50′32″W.

The one or more fire control rules 134 may include rules that are not dependent on particular attributes. Such rules may omit one or more attributes (e.g., <location>, <latitude>, <longitude>, <radius>) or may use a wildcard for one or more attributes. For example, a sixth example rule is <user ID=“*”>; <arm type=“rifle”>, and a seventh example rule is <location name=“Sabine National Forest”>; <latitude=“31°20′27″N”>; <longitude=“93°50′32″W”>; <radius=“*”>; <user ID=“*”>; <arm type=“rifle”>. Both the sixth and the seventh example rules indicate that rifles may not be used regardless of location (e.g., globally).

The one or more fire control rules 134 may include various rule types. A rule's type is determined by the attributes included in the rule. Rule types may include a hunting type, a restricted area type, a restricted user type, a severity type, etc. A rule of the hunting type allows unlock of firearms within an authorized time period. A rule of the restricted area type prohibits use of a firearm within a restricted area. The restricted area may be defined by a location and a radius. A rule of the restricted user type prohibits a particular individual using a firearm. A rule of the severity type restricts use of a firearm within areas associated with a particular severity level. The one or more fire control rules 134 may include rules of hybrid types. For example, a restricted area rule may have a hunting exception. That is, use of a firearm may be restricted within an area except during an authorized period. Further, use of a firearm may be restricted within an area for a specific user. Rules of the one or more fire control rules 134 may be specific to weapon types. For example, a restricted area rule may apply only to handguns. As explained above, the restricted area may be defined by a location and a radius. A second rule may restrict a different type of weapon (e.g., rifles) based on the same location and a different radius. Thus, the one or more fire control rules 134 may restrict use of firearms of a particular type based on a firearm type-specific radius around a location. One or more rules may be associated with a severity level. Based on the severity level

Referring back to the memory 120, the memory 120 further stores instructions 136. The instructions 136 comprise computer readable code executable by the processing device 122 to perform one or more actions described herein. It should be noted that in some implementations, the processing device 122 includes special purpose hardware configured to perform some or all of the actions described herein. In implementations in which the processing device 122 includes special purpose hardware configured to perform all of the operations described herein, the memory 120 may not store the instructions 136.

The locking device 104 of the may correspond to one of a variety of electronic locking mechanisms. FIGS. 3A and 3B (described further below) illustrate an electronic lock with a motor, and FIGS. 4A and 4B (described further below) illustrate electronic locks operated with magnetic fields. These examples are provided for illustration only. Any electronic locking mechanism responsive to signals from a processing device may be used. The locking device 104 is configured to remain locked in response to a disruption to a power source associated with the locking device 104.

The trigger 106 is a component of the firearm configured to cause discharge of the firearm responsive to actuation. The locking device 104 is configured to prevent actuation of the trigger 106 by default and to selectively enable actuation of the trigger 106 based on one or more signals from the lock controller 102. That is, during normal operation of the system 100, the locking device 104 has a default condition in which the locking device 104 is engaged so that the firearm is locked and cannot be discharged. FIGS. 2A and 2B (described further below) illustrate examples of the system 100 embedded in different types of firearms. These examples are provided for illustration only. Accordingly, the system 100 may be embedded in various types of firearms to selectively enable discharge of the firearms.

In operation, the processing device 122 receives a request from the user interface 130 to disengage the locking device 104. For example, a user of the firearm may press a button on the user interface 130 or perform some other interaction with the user interface 130 or with the weapon, such as releasing the safety mechanism or placing a finger on the trigger (both of which can have a sensor that senses the action). Responsive to the user interaction, the user interface 130 or sensor may send a request to disengage the locking device 104 to the processing device 122.

Responsive to the request from the user interface 130 or other sensor, the processing device 122 attempts to access expected data for determining whether to disengage the locking device 104. The expected data may be defined by the instructions 136 (or special purpose hardware of the processing device 122). In the illustrated example, the expected data includes the user identifier 131, the firearm type 132, the one or more fire control rules 134, time data 140 from the time sensor 124, and location data 142 from the location sensor 126. The time data 140 indicates a current time and the location data 142 indicates a current location of the firearm. The location data 142 corresponds to latitude and longitude values in some implementations. The processing device 122 may be configured to decline to disengage the locking device 104 in response to failing to receive some or all of the expected data. For example, the processing device 122 may decline to disengage the locking device 104 in response to failing to receive any one of the user identifier 131, the firearm type 132, the time data 140, or the location data 142.

Once the expected data is accessed, the processing device 122 determines whether the one or more fire control rules 134 are up to date. For example, the processing device 122 may be configured to decline to disengage the lock in response to determining based on the time data 140 and an entry in the one or more fire control rules 134 that the one or more fire control rules 134 were last updated more than a threshold duration of time ago.

The processing device 122 is further configured to determine whether to disengage the locking device 104 based on the user identifier 131, the firearm type 132, the one or more fire control rules 134, the time data 140, and the location data 142. In some implementations, the processing device 122 determines whether circumstances corresponding to the user identifier 131, the firearm type 132, the time data 140, the location data 142 or a combination thereof correspond to (e.g., match) any of the fire control rules 134. The processing device 122 is configured to disengage the locking device 104 to enable actuation of the trigger 106 in response to determining that the circumstances do not match any of the one or more fire control rules 134. Further, the processing device 122 is configured to disengage the locking device 104 to enable actuation of the trigger 106 based on determining that the circumstances fall within an exception (e.g., an authorized period) to each rule that matches the circumstances. The processing device 122 is configured to decline to disengage the locking device 104 based on determining that the circumstances match one of the one or more fire control rules 134 without falling within an exception to that rule. FIGS. 5A and 5B (described below) illustrate an example of a method that may be implemented by the processing device 122 to determine whether to disengage the locking device 104. In some implementations, the processing device 122 is configured to engage the locking device 104 based on a period of time since disengaging the locking device 104 satisfying a threshold.

Thus, FIG. 1 illustrates a system for locking and selectively unlocking a firearm. The system may determine whether to unlock the firearm based on type of the firearm, location of the firearm, and one or more other factors. Accordingly, the system may reduce use of firearms of particular types in locations that are inappropriate for use of those types of firearms. Further, the system may limit use of firearms in other inappropriate circumstances.

Referring to FIG. 2A, a diagram illustrating the system 100 embedded in a handgun is shown. In the illustrated example, the lock controller 102 is embedded within a handgrip of the handgun, and the locking device 104 can be embedded within the handgrip or body. Other arrangements are possible.

Referring to FIG. 2B, a diagram illustrating the system 100 embedded in an assault rifle is shown. In the illustrated example, the lock controller 102 and locking device 104 are embedded within a stock of the assault rifle. Other arrangements are possible. Further, the system 100 may be embedded in other types of weapons and firearms than those illustrated in FIGS. 2A-2B. And, the lock controller 102 and locking device 104 can be permanently affixed to the weapon in any suitable manner, such as being embedded inside the weapon (or weapon housing) or integrally formed with the weapon.

Referring to FIGS. 3A-3B, a diagram illustrating a first example of the system 100 is shown. In the first example, the locking device 104 corresponds to a motorized locking device.

FIG. 3A depicts the motorized version of the locking device 104 in a locked position (e.g., engaged) and FIG. 3B illustrates the motorized version of the locking device 104 in an unlocked position (e.g., disengaged). The motorized version of the locking device 104 includes a power source 201 (such as a battery), a motor 202, and a pin 204. In the locked position, the pin 204 prevents actuation of the trigger 106 while in the unlocked position, the pin 204 does not prevent actuation of the trigger 106. The power source 201 is configured to drive the motor 202 responsive to signals from the lock controller 102 to move the pin 204 from the locked position to the unlocked position and vice versa.

Referring to FIGS. 4A-4B, a diagram illustrating a second example of the system 100 is shown. In the second example, the locking device 104 corresponds to a magnetic locking device.

FIG. 4A depicts the magnetic version of the locking device 104 in a locked position (e.g., engaged) and FIG. 4B illustrates the magnetic version of the locking device 104 in an unlocked position (e.g., disengaged). The magnetic version of the locking device 104 includes a power source 301 (such as a battery), one or more coils 304, a spring 306, and a pin 308. In the locked position, the pin 308 prevents actuation of the trigger 106 while in the unlocked position, the pin 204 does not prevent actuation of the trigger 106. The spring 306 is configured to push the pin 308 into the locked position. The power source 302 is configured to energize the coils 304 to generate a magnetic field responsive to a signal from the lock controller 102. The magnetic field is configured to attract the pin 308 toward the one or more coils 304 overcoming the spring force of the spring 306 and moving the pin 308 from the locked position to the unlocked position. The lock controller 102 may initiate movement of the pin 308 to the locked position by signaling the power source 302 to cease energizing the one or more coils 304. It is further noted that any suitable locking device 104 can be utilized that selectively prevents the weapon from being discharged, and not just those shown in FIGS. 3-4. For example, in some implementations, the trigger 106 is locked by a magnetic field.

Referring to FIGS. 5A-5B, a flowchart illustrating an operation or method 500 for determining whether to disengage a trigger locking device is shown. The method 500 may include a different number or sequence of steps than shown in some examples. The processing device 122 of the lock controller 102 may perform the method 500. The method 500 includes attempting to access an arm type, a user ID, one or more fire control rules, location data, and time data, at 502. For example, based on input from the user interface 130, the processing device 122 may attempt to access the user identifier 131, the firearm type 132, the one or more fire control rules 134, the time data 140, and the location data 142 (e.g., expected data).

The method 500 further includes determining whether expected data is missing, at 504. For example, the processing device 122 may determine whether one or more of the user identifier 131, the firearm type 132, the one or more fire control rules 134, the time data 140, and the location data 142 is inaccessible. In response to determining that some of the expected data is missing, the method 500 includes not initiating a trigger unlock, at 524. For example, the processing device 122 may not initiate disengagement of the locking device 104 based on determining that the memory 120 does not include fire control rules that location data from the location sensor 126 is unavailable, or based on some other expected data being inaccessible. This functionality may prevent a user from attempting to disable the locking device 104 by disabling the location sensor 126 or erasing the memory 120.

In response to determining that none of the expected data is missing, step 504, the method 500 further includes determining whether the fire control rules are expired, at 506. For example, the processing device 122 may determine whether the one or more fire control rules 134 are expired based on the time data and based on an entry of the one or more fire control rules 134 indicating a last update. In response to determining that the one or more fire control rules are expired, step 506, the method 500 includes not initiating a trigger unlock, at 524. For example, the processing device 122 may not initiate disengagement of the locking device 104 based on determining that the one or more fire control rules 134 have not been updated for a period of time that exceeds a threshold (e.g., 1 year). The processing device 122 may access, via a communication interface of the lock controller 102, updates to the one or more fire control rules 134 from a remote device. The remote device may correspond to a server maintained by a government agency or to a storage device (e.g., a memory stick). The processing device 122 may update the date and time of the last update of the one or more fire control rules 134 based on when the remote device is accessed or based on an entry of the remote device. By determining not to initiate disengagement of the locking device 104 in response to determining that the one or more fire control rules 134 have not been updated for longer than a threshold period of time, the processing device 122 may prevent a user from avoiding updates to the one or more fire control rules 134 in an effort to avoid future restrictions (e.g., new restrictions issued by the government agency).

In response to determining that the one or more fire control rules are not expired (i.e., that the fire control rules are current), step 506, the method 500 includes determining whether the one or more fire control rules prohibit the user ID from using the arm type, at 508. For example, the processing device 122 may determine whether any of the one or more fire control rules 134 prohibit the user identifier 131 from using the firearm type 132. In response to determining that the one or more fire control rules prohibit the user ID from using the arm type, the method 500 includes not initiating a trigger unlock, at 524. For example, the processing device 122 may not initiate disengagement of the locking device 104 based on determining that the one or more fire control rules 134 indicate the user identifier 131 may not use the firearm type 132. This functionality may enable law enforcement to disable a particular weapon which a person who is not law enforcement might otherwise not be permitted to use.

In response to determining that the user ID is not prohibited from using the arm type, the method 500 includes determining whether the one or more fire control rules prohibit hunting arms and the arm type corresponds to a hunting arm, at 510. For example, the processing device 122 may determine whether the one or more fire control rules 134 include a rule specifying that hunting weapons are prohibited (e.g., <location name=“Sabine National Forest”>; <latitude=“31°20′27″N”>; <longitude=“93°50′32″W”>; <radius=“1000 feet”>; <arm type=“hunting”>; <user ID=“*”>; <authorized period=“10/01/2018-11/01/2018”>; <date of entry=“8/7/2018”>; <time of entry=“11:37:00CT”> and whether the firearm type 132 indicates a hunting arm (e.g., hunting rifle). In response to determining that the fire control rules prohibit hunting arms and that the arm type corresponds to a hunting arm, the method 500 includes determining whether the fire control rules indicate that the current time is within an authorized period (e.g., a hunting season), at 512. For example, the processing device 122 may determine whether the time data 140 indicates a time that falls within an authorized period (e.g., Oct. 1, 2018-Nov. 1, 2018) of a rule that prohibits hunting arms. In response to determining that the current time does not fall within the authorized period, the method 500 includes not initiating a trigger unlock, at 524. For example, the processing device 122 may not initiate disengagement of the locking device 104 based on determining that a firearm is a hunting weapon and the current time is outside of the authorized period.

In response to determining that the fire control rules do not prohibit hunting arms, the arm type does not correspond to a hunting arm, or that the fire control rules indicate that the current time is within an authorized period, the method 500 further includes calculating one or more distances between a location of the arm and locations identified by the one or more fire control rules and/or a severity database, at 514. For example, the processing device 122 may calculate a distance between a location indicated by the location data 142 (e.g., a position of the arm into which the system 100 is integrated) and one or more locations indicated by the one or more fire control rules 134 and/or the severity database stored in the memory 120. To illustrate, for the rule <location name=“Sabine National Forest”>; <latitude=“31°20′27″N”>; <longitude=“93°50′32″W”>; <radius=“200 feet”>; <arm type=“hand gun”>; <user ID=“*”>; <date of entry=“8/7/2018”>; <time of entry=“11:37:00CT”>, the processing device 122 may calculate a distance between the location indicated by the location data 142 and 31°20′27″N, 93°50′32″W. In some implementations, the severity database maps classes or categories of locations to severity levels rather than specific locations. For example, the severity database may indicate that hospitals have a severity level of 0. The processing device 122 may access a 3 r ^(d) party application or device to identify locations corresponding to classes or categories in the severity database that are near the location indicated by the location data 142. For example, the processing device 122 may access^(Google)® maps to identify locations of hospitals around the location indicated by the location data 142 based on the severity database including an entry for hospitals (Google is a registered trademark of Google LLC of Mountain View Calif.).

The processing device 122 may calculate the one or more distances using the Haversine algorithm. As explained above, latitudes and longitudes operated on by the system 100 may be expressed in decimal degrees. An example of Java version of the Haversine algorithm that may be executed by the processing device 122 is provided below.

public class HaversineAlgorithm { static final double _eQuatorialEarthRadius = 6378.1370D; static final double _d2r = (Math.PI / 180D); public static int HaversineInM(double lat1, double long1, double lat2, double long2) { return (int) (1000D * HaversineInKM(lat1, long1, lat2, long2)); } public static double HaversineInKM(double lat1, double long1, double lat2, double long2) { double dlong = (long2 − long1) * _d2r; double dlat = (lat2 − lat1) * _d2r; double a = Math.pow(Math.sin(dlat / 2D), 2D) + Math.cos(lat1 * _d2r) * Math.cos(lat2 * _d2r) * Math.pow(Math.sin(dlong / 2D), 2D); double c = 2D * Math.atan2(Math.sqrt(a), Math.sqrt(1D − a)); double d = _eQuatorialEarthRadius * c; return d; } }

The method 500 further includes determining whether the arm is located within an area that has a severity level for which the fire control rules restrict the arm type, at 516. For example, after determining distances between the locations identified in the severity database, the processing device 122 may determine whether the distance to any of the locations in the severity database falls within a corresponding radius. To illustrate, after determining that the arm is located 200 meters from a hospital, the processing device may compare a radius (e.g., 300 meters) associated with the hospital to 200 meters to determine whether the arm falls within the radius associated with the hospital. If the arm is within a radius associated with a location in the severity database, the processing device 122 determines whether the one or more fire control rules 134 include a rule prohibiting the firearm type 132 in areas with a severity level corresponding to the location. To illustrate, in response to determining that the arm is within the 300 meter radius of the hospital, the processing device 122 may determine whether the one or more fire control rules 134 include a rule restricting use of the firearm type 132 in areas having the severity level of the hospital (e.g., 0).

In response to determining that the arm is located within an area that has a severity level for which the fire control rules restrict the arm type, the method 500 includes not initiating a trigger unlock, at 524. For example, the processing device 122 may determine not to initiate a trigger unlock in response to determining that the arm is located within the 300 meter radius of the hospital described above, that the hospital has a severity level of “0” and that the one or more fire control rules 134 restrict use of firearms in areas of severity level 0. Some severity level based fire control rules may be specific to specific users/user classes or may exempt users/user classes. For example, police officers may be exempted from one of the one or more fire control rules 134 restricting weapon use in areas of a particular severity. As another example, a particular severity level based fire control rule may only apply to John Smith.

In response to determining that the arm is not within an area that has a severity level for which the fire control rules restrict the arm type, the method 500 includes determining whether the arm is within an area for which all types are disallowed, at 518. For example, the one or more fire control rules 134 indicate that all firearm types are disallowed within a radius of a location. An example of such a rule is <location name=“Sabine National Forest”>; <latitude=“31°20′27″N”>; <longitude=“93°50′32″W”>; <radius=“200 meters”>; <arm type=“*”>; <user ID=“*”>; <date of entry=“8/7/2018”>; <time of entry=“11:37:00CT”>. This rule may prohibit use of all weapon types within 200 meters of Sabine National Forest. The processing device 122 may determine whether the distance from the location indicated by the location data 142 to 31°20′27″N, 93°50′32″W is less than or equal to 200 meters. In response to determining that the arm is within an area for which the fire control rules restrict all arm types, the method 500 includes not initiating a trigger unlock, at 524. For example, in response to determining that the arm is within 200 meters of 31°20′27″N, 93°50′32″W and that all arm types are banned in that area, the processing device 122 may not initiate disengagement of the locking device 104. Locations identified by the one or more fire control rules 134 can include specific buildings or areas where weapons are prohibited or restricted to certain personnel, such as at a school, church, and government building like a court. Some location based fire control rules may be specific to specific users/user classes or may exempt users/user classes. For example, park rangers may be exempt from a fire control rule restricting weapon use within a park. As another example, a particular location based fire control rule may only apply to John Smith.

In response to determining that the arm is not within an area for which all arm types are restricted, the method 500 further includes determining whether the arm is within an area for which the arm type is restricted, at 520. For example, the processing device 122 may determine whether the location indicated by the location data 142 is within an area identified by the one or more fire control rules 134 for which the firearm type 132 is restricted. An example of a rule that restricts a specific type of firearm is <location name=“Sabine National Forest”>; <latitude=“31°20′27″N”>; <longitude=“93°50′32″W”>; <radius=“200 feet”>; <arm type=“hand gun”>; <user ID=“*”>; <date of entry=“8/7/2018”>; <time of entry=“11:37:00CT”>. Based on this rule, the processing device 122 may determine whether the distance between 31°20′27″N, 93°50′32″W and the location indicated by the location data 142 is less than or equal to 200 feet and whether the firearm type 132 corresponds to hand gun. As described above, location based rules may apply to specific users/user classes and/or exempt users/user classes.

In response to determining that the arm is within an area for which the fire control rules restrict the arm type, the method 500 includes not initiating a trigger unlock, at 524. In response to determining that the arm is not within an area for which the fire control rules restrict the arm type, the method 500 includes initiating a trigger unlock, at 522. For example, the processing device 122 may initiate transition of the locking device 104 into an unlocked position as shown in FIGS. 3B and 4B. Once the locking device 104 is in the unlocked position (e.g., disengaged), the trigger 106 may be actuated (e.g., by a user). To illustrate, the processing device 122 may initiate unlock of the locking device 104 based on determining that the location data 142 does not indicate a location that falls within any restricted areas (indicated by location and radius) associated with the firearm type 132 as indicated by the fire control rules 134.

Thus, the method 500 may be executed by being performed by a lock controller, such as the lock controller 102, to determine whether to disengage a locking device. Because the method 500 includes determining whether to disengage the locking device based on a user identifier, a firearm type, one or more fire control rules, time data, location data, or a combination thereof, a firearm may be prevented from discharging under various conditions. In this way, a user can use a particular weapon in locations that are permitted, but that weapon will be locked so it cannot be discharged at a restricted location such as a school.

The method 500 may be implemented within components of a firearm. For example, the lock controller 102 and the locking device 104 may be integrated within a firearm. Accordingly, locking and unlocking of the firearm may be controlled by the lock controller 102 and the locking device 104 rather than by components remote to the firearm. Since the decision to lock/unlock the firearm is made locally, a user may be unable to inappropriately circumvent a lock of the firearm by sending an unlock signal to the firearm from an external device. Further, since the method 500 includes determining whether expected data is missing, at 504, and not initiating trigger unlock, at 524, in response to determining that the expected data is missing, the method 500 may be resistant to a user tampering with components of the firearm to circumvent the lock. For example, the processing device 122 may not unlock the firearm in response to determining that one of the time data 140, the location data 142, the one or more fire control rules 134, the user identifier 131, or the firearm type 132 is unavailable (e.g., due to tampering with the time sensor 124, the location sensor 126, or the memory 120). Thus, the method 500 may be robust to certain types of circumvention.

The foregoing description and drawings should be considered as illustrative only of the principles of the invention. The describe subject matter may be configured in a variety of shapes and sizes and is not intended to be limited by the preferred example. Numerous applications of the described subject matter will readily occur to those skilled in the art. Therefore, it is not desired to limit the described subject matter to the specific examples disclosed or the exact construction and operation shown and described. Rather, all suitable modifications and equivalents may be resorted to, falling within the scope of the disclosure. Further, various examples described herein may be combined. 

I claim:
 1. An apparatus for controlling a trigger mechanism of a weapon, the apparatus comprising: a locking device configured to disable the trigger mechanism in a default engaged state; and a lock controller, the lock controller comprising: a location sensor configured to provide current location data of the weapon; a processing device; and a memory device storing: one or more fire control rules; and instructions executable by the processing device to determine whether to disengage the locking device to enable the trigger mechanism based on the one or more fire control rules, the current location data from the location sensor, and a type of the weapon.
 2. The apparatus of claim 1, wherein the locking device includes a pin configured to prevent actuation of the trigger mechanism while in a locked position and to move.
 3. The apparatus of claim 2, wherein the locking device includes a set of coils configured to generate a magnetic field to move the pin.
 4. The apparatus of claim 1, wherein the instructions executable by the processing device to determine whether to disengage the locking device are further executable by the processing device to determine whether to disengage the locking device based further on a user identifier stored in the memory device.
 5. The apparatus of claim 1, wherein the lock controller further comprises a time sensor, wherein the instructions executable by the processing device to determine whether to disengage the locking device to enable the trigger mechanism based on the one or more fire control rules, the current location data from the location sensor, and the type of the weapon are further executable by the processing device to determine whether to disengage the locking device based further on a date received from the time sensor and an authorized period indicated by the one or more fire control rules.
 6. The apparatus of claim 1, wherein the instructions executable by the processing device to determine whether to disengage the locking device to enable the trigger mechanism are further executable to determine not to disengage the locking device in response to determining that the one or more fire control rules have expired.
 7. The apparatus of claim 1, further comprising a user interface, wherein the instructions executable by the processing device to determine whether to disengage the locking device to enable the trigger mechanism are executable to determine whether to make the determination responsive to input from the user interface.
 8. The apparatus of claim 1, wherein the instructions executable by the processing device to determine whether to disengage the locking device are executable to initiate disengagement of the locking device responsive to the current location data from the location sensor indicating that the weapon is outside of a threshold radius around a restricted location identified by the one or more fire control rules.
 9. The apparatus of claim 8, wherein the threshold radius is specific to the type of the weapon.
 10. A computer readable storage device storing instructions executable by one or more processing devices to: receive location data from a location sensor of a firearm; and determine whether to disengage a locking device to enable a trigger of the firearm based on one or more fire control rules, data from the location sensor, and a type of the firearm.
 11. The computer readable storage device of claim 10, wherein the instructions are further executable by one or more processing devices to initiate, in response to a determination to disengage the locking device, initiate movement of a pin of the locking device to an unlocked position, the pin configured to prevent actuation of the trigger while in a locked position.
 12. The computer readable storage device of claim 10, wherein the instructions executable by the one or more processing devices to determine whether to disengage the locking device are further executable by the one or more processing devices to determine whether to disengage the locking device based further on a user identifier associated with the firearm.
 13. The computer readable storage device of claim 10, wherein the instructions executable by the one or more processing devices to determine whether to disengage the locking device to enable the trigger are further executable by the one or more processing devices to determine whether to disengage the locking device based further on an authorized period indicated by the one or more fire control rules and a current time.
 14. The computer readable storage device of claim 10, wherein the instructions executable by the one or more processing devices to determine whether to disengage the locking device to enable the trigger are further executable to determine not to disengage the locking device in response to determining that the one or more fire control rules have expired.
 15. The computer readable storage device of claim 10, wherein the instructions executable by the one or more processing devices to determine whether to disengage the locking device are executable to initiate disengagement of the locking device responsive to the data from the location sensor indicating that the firearm is outside of a threshold radius around a restricted location identified by the one or more fire control rules.
 16. The computer readable storage device of claim 15, wherein the threshold radius is specific to the type of the firearm.
 17. A method comprising: receiving location data from a location sensor of a firearm; and determining whether to disengage a locking device to enable a trigger of the firearm based on one or more fire control rules, data from the location sensor, and a type of the firearm.
 18. The method of claim 17, further comprising, in response to a determination to disengage the locking device, initiating movement of a pin of the locking device to an unlocked position, the pin configured to prevent actuation of the trigger while in a locked position.
 19. The method of claim 17, wherein determining whether to disengage the locking device is based further on a user identifier associated with the firearm.
 20. The method of claim 17, wherein determining whether to disengage the locking device is based further on an authorized period indicated by the one or more fire control rules and a current time. 